package com.atguigu.tingshu.user.service;

import com.atguigu.tingshu.model.user.UserInfo;
import com.atguigu.tingshu.vo.user.UserInfoVo;
import com.atguigu.tingshu.vo.user.UserPaidRecordVo;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

public interface UserInfoService extends IService<UserInfo> {

    /**
     * 微信登录
     *
     * @param code 小程序wx.login()获取调用微信服务端临时票据（有效次数一次，有效时间5分钟）
     * @return {"token":"用户令牌"}
     */
    Map<String, String> wxLogin(String code);

    /**
     * 获取当前用户基本信息
     * @param userId
     * @return
     */
    UserInfoVo getUserInfo(Long userId);

    /**
     * 更新用户信息
     * @param userId
     * @param userInfoVo
     */
    void updateUser(Long userId, UserInfoVo userInfoVo);


    /**
     * 检查专辑页中每一页中声音对应购买请求
     * @param userId 用户ID
     * @param albumId 专辑ID
     * @param needCheckBuyStatuTrackIds 待检查购买情况声音ID列表（调用前免费试听去掉）
     * @return {声音ID:购买情况}  购买情况：1：已购  0：未购
     */
    Map<Long, Integer> userIsPaidTrack(Long userId, long albumId, List<Long> needCheckBuyStatuTrackIds);

    /**
     * 判断当前用户是否购买指定专辑
     * @param userId
     * @param albumId
     * @return
     */
    Boolean isPaidAlbum(Long userId, Long albumId);

    /**
     * 查询用户某个专辑已购声音ID列表
     *
     * @param userId
     * @param albumId
     * @return
     */
    List<Long> getUserPaidTrackIdList(Long userId, Long albumId);

    /**
     * 虚拟物品发货，新增用户购买记录-处理购买类型：1.专辑 2.声音 3.会员
     *
     * @param userPaidRecordVo 购买记录VO对象
     * @return
     */
    void savePaidRecord(UserPaidRecordVo userPaidRecordVo);

    /**
     * 更新会员标识
     */
    void updateVipExpireStatus();
}
